#ifndef __COLAPIEZAS_H
#define __COLAPIEZAS_H
#include "vector_piezas.h"
#include "color.h"
#include "imagen.h"

/**
@brief Mantiene el estado de la cola de piezas, tambien la dibuja e inserta piezas nuevas
*/
class ColaPiezas{

	private:
		/**
		@brief Vector de piezas que contiene todas las piezas posibles
		*/		
		VectorPiezas vp;
		/**
		@brief Numero de piezas que contiene la cola de pizas
		*/		
		int tam;
		/**
		@brief Posicion X donde comienza a pintarse la cola
		*/
		int posx;
		/**
		@brief Posicion Y donde comienza a pintarse la cola
		*/
		int posy;
		/**
		@brief Ancho de la cola de piezas
		*/
		int ancho;
		/**
		@brief Alto de la cola de piezas
		*/
		int alto;
		/**
		@brief Tamaño del marco de la cola de piezas
		*/
		int marco;
		/**
		@brief Color del fondo
		*/
		Color fondo;
		/**
		@brief Color del borde
		*/
		Color borde;
		
	public:
		/**
     		@brief Constructor por defecto
  		 */
		ColaPiezas();
		/**
    	 	@brief Constructor por valor
    	 	@param vp Vector de piezas del que se va a hacer la copia
    	 	@param tam Numero de piezas que contiene
   		*/
		ColaPiezas(int posx,int posy,int ancho,int alto,int marco,const Color& borde,const Color& fondo, const VectorPiezas &vp,int tam);
		/**
     		@brief Devuelve el tamaño de la cola
    		@return Número total de elementos en la cola
   		*/
		int Tama() const;
		/**
     		@brief Inserta una pieza en la cola por el final
    		@param p Pieza que se inserta en la cola
   		*/
		void InsertarPieza(const Pieza &p);
		/**
     		@brief Pinta la cola de piezas en ventana
    		@param posx Posición de la anchura de esquina superior izquierda
		@param posy Posición de la altura de esquina superior izquierda
		@param ancho Anchura de la cola de piezas
		@param alto Altura de la cola de piezas
		@param marco Tamaño del marco de la cola de piezas
		@param borde Color del borde
		@param fondo Color del fondo
		@param dir Directorio donde se encuentran las imagenes
		@param imagenes Matriz que contiene los nombres de las imágenes
		@param num_imagenes Número de imagenes que contiene la matriz de imágenes		
   		*/
		void Pinta(Imagen im[],int num_imagenes)const;
		/**
     		@brief Operador de indexación
     		@param i Índice del vector
   		*/
		Pieza& operator[](int i)const;
		/**
     		@brief Destructor
   		*/
		~ColaPiezas();


};









#endif
